# include <stdio.h>
# include <malloc.h>
# include <stdlib.h>
# include <stdbool.h>

//����struct Array�ṹ�� 
struct Array{
	
	int * pBase;    //ָ������ĵ�һ��Ԫ�ص�ַ 
	int life;       //�����ٸ� 
	int len;		//���鳤�� 
	
};

//������ʼ�� 
void init_arr(struct Array * pArr, int length);
void show_arr(struct Array * pArr);
bool is_empty(struct Array * pArr);
bool is_full(struct Array * pArr); 
bool append_arr(struct Array * pArr, int num);
bool insert_arr(struct Array * pArr, int pos, int num);

void main(){
	
	struct Array arr;
	
//��ʼ��array 
	init_arr(&arr, 6);
	
//չʾarr���������       
	show_arr(&arr);			
	
	printf("--׷������֮��--\n");

//׷������12345 
	append_arr(&arr, 1);
	append_arr(&arr, 2);
	append_arr(&arr, 3);
	append_arr(&arr, 4);
	append_arr(&arr, 5);

//�������� 
	insert_arr(&arr, 6, 6);

	
//����չʾ 
	show_arr(&arr);
	
	
	
	
	

}

//�����ʼ�� 
void init_arr(struct Array * pArr, int length){
	
	pArr->pBase = (int *)malloc(sizeof(int) * length);
	
	
	if(NULL == pArr->pBase){
		
		printf("��̬�ڴ����ʧ�ܣ�\n");
		exit(-1);
		
	}else{
		
		pArr->life = 0;
		pArr->len = length;
		
	}
	
	
}

//�жϵ�ǰ�����Ƿ�Ϊ�� 
bool is_empty(struct Array * pArr){
	
	if(pArr->life == 0){
		
		return true;
		
	}else{
		
		return false;
		
	}
}

//�жϵ�ǰ�����Ƿ����� 
bool is_full(struct Array * pArr){
	
	if(pArr->life == pArr->len){
		printf("error!����ռ�������");
		return true;
	}else{
		return false;
	}
		
}

//չʾ���� 
void show_arr(struct Array * pArr){
	
	if(is_empty(pArr)){
		
		printf("����Ϊ�գ�\n");
		
	}else{
		
		int i;
		
printf("---------status---------\n");
		printf("����ռ��СΪ��%d\n", pArr->len);
		printf("������Ϊ��%d", pArr->life);
		printf("����Ϊ:\n");



		for(i=0; i<pArr->life; i++){
			
			printf("%d", pArr->pBase[i]);
				
		}
		printf("\n");
	}
	
	
}

//׷������ 
bool append_arr(struct Array * pArr, int num){
	
	if(is_full(pArr)){
		return false;
	}else{
		
		pArr->pBase[pArr->life] = num;
		pArr->life++;
		return true;
		
	}
	
	
	
	
}

//�������� 
bool insert_arr(struct Array * pArr, int pos, int num){
	
	int i;
	
	if(is_full(pArr)){
		printf("fulled\n");
		return false;
	}
	
	
	if(pos >=1 && pos <= pArr->life+1){
		
		
		for(i = pArr->len-1; i >= pos - 1; i--){
			
			pArr->pBase[i] = pArr->pBase[i-1]; 
			
		}
		
		pArr->pBase[pos-1] = num;
		pArr->life++;
		
		printf("��ϲ��ɹ���%dλ�ã�����num:%d\n",pos, num);
	
	}else{
		
		printf("����ʧ�ܣ�����һ�²���λ��,��ʱ����[%d]��λ�ÿ��Բ��룡\n", pArr->life + 1);

	}


		
	
		
	
	
}
